package bzqn.com.rongcloudsdk;

import android.content.Context;
import android.text.TextUtils;

import bzqn.com.rongcloudsdk.mod.TokenMod;
import bzqn.com.rongcloudsdk.utils.DialogUtils;
import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;

import static io.rong.imkit.utils.SystemUtils.getCurProcessName;

/**
 * Created by a on 2017/5/15.
 */

public class GetToken {
    public static void getRYTokenAndConnect(final RongIMClient.ConnectCallback callback,String uid){
        ServerApi.getToken(new HttpResponseCallback<TokenMod>() {
            @Override
            public void onSuccess(TokenMod mod) {
                //如果获取token成功
                String token = mod.getToken();
                if (!TextUtils.isEmpty(token)){
                    connect(token,callback);
                    return;
                }
                DialogUtils.showToast("聊天室登录失败！");
            }

            @Override
            public void onFaile(String message) {
                DialogUtils.showToast("聊天室登录失败！");
            }

            @Override
            public void onStart() {

            }
        },uid);
    }
    /**
     * <p>连接服务器，在整个应用程序全局，只需要调用一次，需在 {@link #(Context)} 之后调用。</p>
     * <p>如果调用此接口遇到连接失败，SDK 会自动启动重连机制进行最多10次重连，分别是1, 2, 4, 8, 16, 32, 64, 128, 256, 512秒后。
     * 在这之后如果仍没有连接成功，还会在当检测到设备网络状态变化时再次进行重连。</p>
     *
     * @param token    从服务端获取的用户身份令牌（Token）。
     * @return RongIM  客户端核心类的实例。
     */
    private static void connect(String token,RongIMClient.ConnectCallback callback) {
        MainApplication application = MainApplication.getInstance();
        if (application.getApplicationInfo().packageName.equals(getCurProcessName(application.getApplicationContext()))) {
            RongIM.connect(token, callback);
        }
    }
}
